import { del, get, patch, post } from '~/utils/request'

/**
 * 获取商品列表
 * @param params 查询参数
 * @param params.count 页码，默认值为1
 * @param params.limitNum 每页显示个数，默认值为10
 * @param params.search 搜索的商品名
 * @param params.category 分类名
 * @returns 商品列表数据
 */
export function getProList(params?: {
  count?: number
  limitNum?: number
  search?: string
  category?: string
}) {
  return get('/pro/list', params)
}

/**
 * 获取商品详情
 * @param proid 产品ID
 * @returns 商品详情数据
 */
export function getProDetail(proid: string) {
  return get('/pro/detail', { proid })
}

/**
 * 获取商品分类
 * @returns 商品分类数据
 */
export function getCategory() {
  return get('/pro/getCategory')
}

/**
 * 筛选商品
 * @param params 筛选参数
 * @param params.category 分类
 * @param params.search 搜索关键词
 * @returns 筛选结果
 */
export function searchPro(params: {
  category?: string
  search?: string
}) {
  return post('/pro/searchPro', params)
}

/**
 * 发布商品
 * @param productData 商品数据
 * @param productData.proname 商品名称
 * @param productData.originprice 商品价格
 * @param productData.desc 商品详情
 * @param productData.brand 商品品牌
 * @param productData.category 商品分类
 * @param productData.img1 商品主图
 * @param productData.img2 商品图片2（可选）
 * @param productData.img3 商品图片3（可选）
 * @param productData.img4 商品图片4（可选）
 * @returns 发布结果
 */
export function addProduct(productData: {
  proname: string
  originprice: string
  desc: string
  brand: string
  category: string
  img1: string
  img2?: string
  img3?: string
  img4?: string
}) {
  return post('/pro/product', productData)
}

/**
 * 修改商品信息
 * @param proid 产品ID
 * @param productData 商品更新数据
 * @param productData.proname 商品名称（可选）
 * @param productData.originprice 商品价格（可选）
 * @param productData.desc 商品详情（可选）
 * @param productData.brand 商品品牌（可选）
 * @returns 修改结果
 */
export function updateProduct(
  proid: string,
  productData: {
    proname?: string
    originprice?: string
    desc?: string
    brand?: string
  },
) {
  return patch(`/pro/product/${proid}`, productData)
}

/**
 * 删除商品
 * @param proid 产品ID
 * @returns 删除结果
 */
export function deleteProduct(proid: string) {
  return del(`/pro/product/${proid}`)
}

/**
 * 修改商品是否推荐或者秒杀或者售卖
 * @param proid 产品ID
 * @param type 修改类型 (isseckill, isrecommend, issale)
 * @param flag 状态值 (true 选中 false 未选中)
 * @returns 修改结果
 */
export function updateProductFlag(proid: string, type: string, flag: boolean) {
  return post('/pro/updateFlag', { proid, type, flag })
}

/**
 * 获取秒杀或者推荐的列表
 * @param type 数据类型 (isseckill, isrecommend)
 * @param flag 状态值 (1 选中 0 未选中)
 * @returns 商品列表
 */
export function getShowData(type: string, flag: number) {
  return post('/pro/showdata', { type, flag })
}
